
/**
 * @info    Klasse, welke betalingen afhandeld t.b.v. de Kantine Simulatie
 * @author  (Stephan Veenstra, Michel Jansma) 
 * @version (1.8)
 */

public class CanteenSimulation {

    //Instantie variabelen definiëren van het type Canteen
    private Canteen canteen;

    public CanteenSimulation() {
        //Instantie variabele canteen initialiseren
        this.canteen = new Canteen();
    }
    
    /**
     * @method simulateCanteen
     * @params aantalPersonen
     * @info   Simuleert een aantal dagen in het verloop van de kantine
     * @return <int> days
     */
    public void simulateCanteen(int aantalPersonen) {
        // set de voorraad van de kantine!
        setSimulatorSupply();
        
        //Personen aanmaken en toevoegen!
        setSimulatorPersons(aantalPersonen);
        
        //Kassa rij afhandelen
        this.canteen.handleCheckoutLine();
        
        //Kassa overzicht tonen
        System.out.println(
            "Verkochte artikelen : " + this.canteen.getCheckout().getCheckoutArticles() + "\n" +
            "Kassa omzet         : " + this.canteen.getCheckout().getCheckoutContent()  + "\n" +
            "Kassa gesloten voor vandaag!!"
        );
        //Kassa legen en geschiedenis verwijderen
        this.canteen.getCheckout().resetCheckout();
    }
    
    /**
     * @method setSimulatorPersons
     * @params null
     * @info   maak personen aan.
     */
    public void setSimulatorPersons(int aantal){
        
        for(int i=0; i<aantal;i++){
            Person persoon = new Person("Persoon"+i);
            String[] artikelen = {"Appel", "Appel", "Bessen", "Peer"};
            this.canteen.personGetTrayConnectLine(persoon, artikelen);
        }
    }
    
    
    /**
     * @method setSimulatorSupply
     * @params null
     * @info   Maak een demo supply aan.
     */
    private void setSimulatorSupply(){
        String[] product =  {"Appel", "Bessen"  , "Citroen" };
        double[] prijs =    {0.50   , 0.60      , 0.45      };
        int[] aantal =      {4     , 40        , 60        };
        this.canteen.setSupply(product,prijs,aantal);
    }
    
    /**
     * print het aantal artikelen in de supply
     */
    public void printSupply(){
        canteen.getSupply().printAllArticles();
    }
}
